<?php
/*此类主要用于一个无限分类表(id,catname(唯一),pid,path)
 *方法cat_list()返回一个字符串为次无限分类表的下拉菜单名称为cid值为类的id默认值为0；
 *方法add_cat()具有添加类的功能，第一个参数为父类的id，第二个参数为类名。添加成功返回真，否则返回假；
 *方法cat_index()返回数组，第一个参数为类id，第二个参数为布尔型值，如果为假侧返回改类的子类名组成的数组，如果为真侧返回改类下所有类的类名。
 */
class Cat_tab{
	private $tabname;
	private $cat;
	function __construct($tabname){
		$this->tabname=$tabname;
		$this->cat=M('cats');

	}
	function cat_list($pid=0){
		$arr=$this->cat->field("id,pid, catname, concat(path, '-', id) abspath")->order('abspath,id')->select();
		$html='<select name="pid">';
		$html.='<option value="0">--根分类--</option>';
		foreach($arr as $la){
			if($la['pid']==$la['id'])
				$html.='<option selected value="'.$la['id'].'">';
			else
				$html.='<option value="'.$la['id'].'">';
			$num=count(explode('-', $la['abspath']))-2;
			$space=str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",$num);
			$html.=$space.'|-'.$la['catname'];
			$html.='</option>';	
		}
		$html.='</select>';
		return $html;
	}
	function add_cat(){
		try{
			echo $pid;
			if ($_POST['pid']=="0"){
				$this->cat->create();$this->cat->add();
				return true;
			} else {
				$larry=$this->cat->where("id=".$_POST['pid'])->find();
				$_POST['path']=$larry['path']."-".$larry['id'];
				$this->cat->create();
				$this->cat->add();
				return true;
			}
		} catch(Exception $e){return false;}
	}
	function cat_index($cid,$ways='false'){
		$arr=$this->cat->field('catname')->where("pid=$cid")->selact();
		
		foreach($arr as $cname){
			$arr[]=$cname;

		}
		$arr=$this->cat->field('catname,path')->where("pid=$cid")->selact();
		
		foreach($arr as $larry){
			if(in_array($cid,explode('-',$larry['path']))){
				$arr_all[]=$larry['cname'];
			}
		}
		if($ways=='false'){
			return $arr;
			
		} else {
			return $arr_all;
			

		}
	}
}

